/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gradius.Elementos.Naves;

import gradius.InterfaceGrafica.TelaGrafica;
import gradius.Elementos.Tipos.tipoTiro;
import gradius.Elementos.Tiros.Tiro;
import gradius.Elementos.Tiros.TiroFactory;
import java.awt.Image;
import java.util.ArrayList;

/** Classe que define os Multiplos e suas caracteristicas
 *
 * @author Eduardo
 */
public class Multiple extends NaveAtiradora
{
    private Vicviper owner;

    /** Construtor da classe Multiple
     *
     * @param tela - Painel de desenho do jogo
     * @param imagens - Vetor onde as imagens de um determinado elemento são armazenadas
     * @param coordX - Coordenada do eixo horizontal
     * @param coordY - Coordenada do eixo vertical
     * @param tamX - Largura em pixels do elemento no eixo horizontal
     * @param tamY - Largura em pixels do elemento no eixo vertical
     * @param owner - Referencia para a nave que o multiplo persegue
     */
    public Multiple(TelaGrafica tela, Image[] imagens, int coordX, int coordY, int tamX, int tamY, Vicviper owner)
    {
        super(tela,imagens, coordX, coordY, tamX, tamY);
        this.setVidaNave(1);
        this.owner = owner;
        this.setTipoTiro1(this.owner.getTipoTiro1());
        this.setTipoTiro2(this.owner.getTipoTiro2());
    }

    /** Método que atualiza o tipo de tiro que o multiplo irá disparar
     * de acordo com o tipo de tiro da nave que ele segue
     */
    public void update()
    {
        this.setTipoTiro1(this.owner.getTipoTiro1());
        this.setTipoTiro2(this.owner.getTipoTiro2());
    }

    /** Método que faz o multiplo atirar
     *
     * @param tela - Painel de desenho do jogo
     * @param tiros - ArrayList onde o novo tiro será inserido
     */
    @Override
    public void atira(TelaGrafica tela, ArrayList<Tiro> tiros)
    {
        if (this.getTiro1Ready() == 1)
        {
            tiros.add(TiroFactory.getInstance(tela, this.getTipoTiro1(), this.getElementoCoordenada().getCoordX(), this.getElementoCoordenada().getCoordY()+20));
        }
        if (this.getTipoTiro2()!=null)
        {
            if (this.getTiro2Ready() == 1)
            {
                tiros.add(TiroFactory.getInstance(tela, this.getTipoTiro2(), this.getElementoCoordenada().getCoordX(), this.getElementoCoordenada().getCoordY()+20));
            }
        }
    }
}
